Like printf(), scanf() is defined in the ANSI library and declared in stdio.h. This function reads formatted values from the standard input device (usually the keyboard) and "returns" them as discussed below. Its syntax is similar to printf()'s: the first argument is a character string containing (only!) formatting characteristics. '%d' indicates that an integer is expected from the input device. Following the string is a list of the variables associated with each format specifier.
C functions are CALL BY VALUE rather than CALL BY REFERENCE. This means that values passed as arguments to a function are assigned to the function's formal parameters, but any changes to the values of these formal parameters within the body of the called function do not affect the values of those variables in the calling function which were passed as arguments.
However, the above call to the scanf() function DOES change the values of new_age and new_weight in the calling function. The reason is that the ADDRESS of these variables is passed, rather than their contents. This is accomplished with the '&'